Descripción general
Jardines
Los Jardines son portafolios cripto programables implementados como contratos Diamond ERC-2535. Cada Jardín actúa como un "hub" inteligente para las inversiones de un usuario, permitiendo estrategias DeFi actualizables mientras abstrae la complejidad del gas y las transacciones. Los inversores controlan los Jardines mediante un NFT ERC-721 (token único), que representa la propiedad del portafolio. El sistema aprovecha los conceptos de Account Abstraction (ERC-4337) (bundlers y paymasters) para que invertir sea sencillo y eficiente en gas. Un registro de facetas gestionado por la DAO garantiza que solo los módulos (facetas) aprobados puedan añadirse, permitiendo una vía de actualización segura y gobernada.
Jardines como portafolios Diamond
Cada Jardín es una instancia de un proxy Diamond ERC-2535. El Diamond Standard define un proxy que delega llamadas a múltiples contratos faceta. En esencia, "un diamond es un contrato con funciones externas proporcionadas por contratos llamados facetas". Este patrón modular significa que los Jardines tienen un tamaño prácticamente ilimitado y pueden ampliarse con nueva lógica tras el despliegue. Por defecto, cada Jardín incluye las facetas de referencia para actualizaciones, introspección y control de propiedad. Las facetas DiamondCut y DiamondLoupe permiten añadir/reemplazar/eliminar funcionalidades al instante, y la faceta Ownership gestiona los derechos de administración. En la implementación estándar, DiamondCutFacet, DiamondLoupeFacet y OwnershipFacet se despliegan para cada Jardín. Juntas permiten que un Jardín evolucione: los desarrolladores pueden llamar a diamondCut en el proxy para conectar nuevos módulos (por ejemplo, un módulo de préstamos o integración de swaps) sin necesidad de volver a desplegar todo el contrato.
Registro de facetas gestionado por la DAO
Para mantener la seguridad y la descentralización, el protocolo utiliza un registro de facetas gobernado por la DAO. Todos los módulos candidatos (facetas de actualización) deben registrarse y ser verificados antes de su uso. En la práctica, un nuevo contrato de faceta debe ser registrado por el proceso de gobernanza de la DAO. Solo las facetas de este registro on-chain pueden añadirse a los Jardines mediante diamondCut. Actualizar la implementación de una faceta también requiere la aprobación de la DAO, por lo que no se puede inyectar código arbitrario. Cada faceta pasa por una rigurosa verificación por parte de auditores antes de ser incluida en el registro. Este modelo equilibra flexibilidad y seguridad: la DAO garantiza que solo módulos confiables y auditados (por ejemplo, facetas DEX o de préstamos) estén disponibles para los Jardines.
Facetas por defecto (Cut, Loupe, Ownership)
Cada Jardín incluye desde el principio las facetas Diamond principales. DiamondCutFacet proporciona la interfaz diamondCut utilizada para añadir, reemplazar o eliminar selectores de funciones en el proxy del Jardín. DiamondLoupeFacet ofrece introspección: permite a cualquiera consultar qué facetas están presentes y qué funciones implementan. OwnershipFacet gestiona el propietario/admin del Jardín (inicialmente el usuario que lo creó). Estas facetas por defecto garantizan actualizabilidad y control de acceso. Por diseño, cada nuevo Jardín despliega sus propias instancias de estas facetas, por lo que el usuario tiene control total (a través de su cuenta propietaria del NFT) sobre los módulos de su portafolio.
Módulos DeFi componibles
Más allá de los módulos por defecto, los Jardines pueden "conectar" varios módulos DeFi según sea necesario. Por ejemplo, una faceta Lending podría integrar un protocolo de préstamos/borrowing, y una faceta DEX podría permitir intercambios de tokens mediante un AMM. Estas facetas son simplemente otros contratos que implementan lógica financiera. Mediante diamondCut, un usuario (o un contrato autorizado) puede añadir estas facetas a su Jardín, componiendo estrategias de inversión personalizadas. Como las facetas son sin estado y reutilizables, un solo despliegue de una faceta de préstamos puede servir a muchos Jardines, ahorrando gas. Esta modularidad permite que los Jardines se adapten: se pueden integrar nuevos protocolos simplemente registrando su faceta y añadiéndola al Jardín cuando sea necesario.
Garden Factory y propiedad NFT
Los nuevos Jardines son creados por la Garden Factory (ella misma una faceta Diamond). Cuando un usuario llama a la factory, despliega un nuevo proxy Jardín con el usuario como propietario. La factory toma dos parámetros clave: la dirección del usuario (msg.sender) y un nuevo ID de token. Luego acuña un NFT ERC-721 correspondiente a ese ID, vinculándolo al Jardín. Este NFT es el título del Jardín: poseer el NFT significa poseer el contrato del portafolio. En la práctica, si un usuario vende o transfiere su NFT, el Jardín lo acompaña: el nuevo propietario del token tiene control total. Nos basamos en las funciones de transferencia de ERC-721 (transferFrom/safeTransferFrom) y las comprobaciones ownerOf para gestionar esta lógica de propiedad. Así, los Jardines son portafolios totalmente transferibles: un marketplace NFT podría permitir a los usuarios comprar y vender estrategias DeFi completas en una sola transacción.